package com.example.d4_enum;

/**
 * 目标：认识枚举类
 */
public class Test {
    public static void main(String[] args) {
        /*
        枚举类的特点：
        1.枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每给常量记住的都是枚举类的一个对象
        2.枚举类的构造器都是私有的,(写不写都是私有的),因此,枚举类对外不能创建对象
        3.枚举类都是最终类也就是被final修饰的,是不可以被继承的
        4.枚举类中,从第二行开始,可以定义类中的各种成员
        5.编译器为枚举类新增了几个方法,并且都市枚举类都是继承 java.lang.Enum类
         */
        A a1 = A.X;
        System.out.println(a1);

        // 枚举类的构造器都是私有的因此,枚举类对外不能创建对象
        // A a = new A(); // 这是错误的

        // 枚举类的第一行都是常量，记住的是枚举类的对象
        A a2 = A.Y;

        // 枚举类提供一个一些额外API
        A[] as = A.values(); // 获取到枚举类的全部对象
        A a3 = A.valueOf("Z"); // 根据名称获取枚举类对象
        System.out.println(a3.name()); // 获取枚举类对象的名称
        System.out.println(a3.ordinal()); // 获取枚举类对象的索引值

        System.out.println("------------------------------------------");
        // 抽象枚举
        B y = B.Y;
        y.go();
    }
}
